import Utils from '@/utils/common.js'

const cart = {

	state: {
		// 记录购物车商品数据
		cartGoods: uni.getStorageSync('cartGoods') || [],
	},
	mutations: {

		// 第二个是payLoad，传过来的商品对象
		ADD: (state, goods) => {
			// 1. 没有商品时把该商品添加到数组中，并增加count，totalPrice
			// 2. 有该商品时把商品数量加1，选中，计算小计
			// 判断有没有该商品，返回该商品
			const prod = state.cartGoods.find(item => item.id === goods.id)
			if (prod) {
				// 该商品数量+1
				prod.count++
				// 小计 = 数量 * 单价
				prod.totalPrice = prod.count * prod.price
			} else {
				// 给商品列表添加一个新商品
				state.cartGoods.push({
					// 原来products的内容
					...goods,
					// 数量
					count: 1,
					// 小计为当前单价
					totalPrice: goods.price
				})
			}
			uni.setStorageSync('cartGoods', state.cartGoods)
			Utils.toast("加入购物车成功")
		},
		// 减少数量
		RDC: (state, id) => {
			let prod = state.cartGoods.find(item => item.id === id)
			if (prod && prod.count > 1) {
				prod.count--
				prod.totalPrice -= prod.price
				uni.setStorageSync('cartGoods', state.cartGoods)
				return
			}
			Utils.toast("最少购买一件")
		},
		// 删除购物车商品
		RDC_GOODS: (state, index) => {
			state.cartGoods.splice(index,1)
			uni.setStorageSync('cartGoods', state.cartGoods)
		},

	},

	actions: {
		// 添加到购物车
		addToCart({
			commit
		}, goods) {
			commit('ADD', goods)
		},
		// 减
		reduceCart({
			commit
		}, id) {
			commit('RDC', id)
		},

		// 减商品
		reduceGoods({
			commit
		}, index) {
			commit('RDC_GOODS', index)
		}
	},
}

export default cart
